package Day08;


/*7、【编号：809】 我国的居民身份证号码，由由十七位数字本体码和一位数字校验码组成。
请定义方法判断用户输入的身份证号码是否合法，并在主方法中调用方法测试结果。
规则为：号码为18位，不能以数字0开头，前17位只可以是数字，
最后一位可以是数字或者大写字母X。
 */

import java.util.Scanner;

public class Test07 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入身份证号码:");
        String id = sc.next();
        idNum(id);
    }
    public static void idNum(String id) {
        //身份证号码位数18位,并且不以0开头
        if (id.length() == 18 && !id.startsWith("0")) {
            for (int index = 0; index < id.length() - 2; index++) {
            //前17位中一旦出现字母输出身份证号码不合法,并结束此方法
                if (id.charAt(index) < '0' || id.charAt(index) > '9') {
                    System.out.println("您输入的身份证号码不合法!");
                    return;
                }
                //1.前17位都是数字,在第17位遍历完的情况下判断最后一位
                else if(index == id.length()-3){
                    if ((id.charAt(id.length() - 1) >= '0' && id.charAt(id.length() - 1) <= '9') || id.charAt(id.length() - 1) == 'X') {
                        System.out.println("身份证号码合法");
                    }else{
                        System.out.println("您输入的身份证号码不合法!");
                    }
                }
            }
            //2.满足上述所有合法条件后,若满足最后一位是数字或者X,输出合法
            /*if ((id.charAt(id.length() - 1) >= '0' && id.charAt(id.length() - 1) <= '9') || id.charAt(id.length() - 1) == 'X') {
                System.out.println("身份证号码合法");
            }else{
                System.out.println("您输入的身份证号码不合法!");
            }*/
        } else {
            System.out.println("您输入的身份证号码不合法!");//不是18位或者以0开头输出不合法
        }
    }
}
